package com.king.designpatterns.行为模式.观察者模式;

import java.util.ArrayList;
import java.util.List;

/**
 * 具体主题
 *
 * @author king
 * @date 2021-06-10 18:33
 */
public class Button implements Clickable{
    /**
     * 存储注册过的单击事件观察者
     */
    List<ClickableObserver> observers = new ArrayList<>();

    // 按钮信息
    /**
     * 颜色
     */
    String color;

    /**
     * 坐标
     */
    int x, y;

    @Override
    public void click() {
        System.out.println("按钮被单击");
        // 执行所有观察者的书简处理方法
        for (int i = observers.size() - 1; i >= 0; --i) {
            observers.get(i).clicked(this);
        }
    }

    @Override
    public void addClickableObserver(ClickableObserver observer) {
        observers.add(observer);
    }

    @Override
    public void removeClickableObserver(ClickableObserver observer) {
        observers.remove(observer);
    }

    @Override
    public String toString() {
        return "按钮颜色：" + color + "，坐标：" + x + "，" + y ;
    }
}
